package org.wendu.wdoa.security.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.wendu.wdoa.security.dto.MenuDto;
import org.wendu.wdoa.security.dao.HomeDao;
import org.wendu.wdoa.security.service.HomeService;
import org.wendu.wdoa.security.model.Fun;

import java.util.ArrayList;
import java.util.List;

@Service
@Transactional
public class HomeServiceImpl implements HomeService {

    @Autowired
    private HomeDao homeDao;

    @Override
    public List<MenuDto> getUserMenuList(String userId) {
        List<Fun> funList = homeDao.findUserFunList(userId);

        List<MenuDto> mainList = new ArrayList<>();//主菜单集合

        MenuDto currentMainMenu = null;//当前主菜单

        for(Fun fun : funList){
            if(currentMainMenu == null || !fun.getP_id().equals(currentMainMenu.getMenuId())){
                /*
                 * 如果当前主菜单不存在，或者 当前遍历的数据中的父菜单编号与当前主菜单编号不相符
                 * 应当新创建一个当前主菜单，并放入主菜单集合
                 */
               currentMainMenu = new MenuDto();
               currentMainMenu.setMenuId(fun.getP_id());//设置主菜单编号
               currentMainMenu.setMenuName(fun.getP_name());//设置主菜单名称
               currentMainMenu.setChidren(new ArrayList<MenuDto>());//设置子菜单集合
               mainList.add(currentMainMenu);
            }

            //将当前遍历数据中的子菜单部分分离出来，封装到MenuDto对象中，并将该对象放入当前主菜单的子菜单集合中
            MenuDto subMenu = new MenuDto();
            subMenu.setMenuId(fun.getF_id());
            subMenu.setMenuName(fun.getF_name());
            subMenu.setMenuUrl(fun.getF_url());
            currentMainMenu.getChidren().add(subMenu);


        }
        return mainList;

//        funList.forEach(fun->{
//            if(currentMainMenu == null || !fun.getP_id().equals(currentMainMenu.getMenuId())){
//                /*
//                 * 如果当前主菜单不存在，或者 当前遍历的数据中的父菜单编号与当前主菜单编号不相符
//                 * 应当新创建一个当前主菜单，并放入主菜单集合
//                 */
//               currentMainMenu = new MenuDto();//内部类不能访问外部的局部变量
//            }
//        });




    }
}
